import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import Main from '@/views/Main.vue'; //
import Home from '@/views/Home.vue';
import Login from '@/views/Login.vue';
// import 404 from '@/views/404.vue';
import NotFound from "@/views/404.vue"; // 导入 404 页面组件
import { useAllDataStore } from '@/stores/index';
 
// 定义路由配置
const routes: RouteRecordRaw[] = [
  {
    path: '/',
    name: 'main',
    component: Main,
    redirect: { name: 'login' }, // 默认重定向到 login 子路由
     children: [
      {
        path: 'home',
        name: 'home',
        component: Home,
      }
    ],
     
  },
  {
    path: '/login',
    name: 'login',
    component: Login,
  },
  {
    path: '/main', // 如果确实需要 /main 路径
    redirect: { name: 'home' }, // 仅保留重定向规则
  },
  
  // 其他路由配置...
  {
    //path: "/:pathMatch(.*)*", // 通配符路由
    path: '/404', // 定义一个显式的 404 页面路由
    name: "404",
    component: NotFound,
  },
];
 
// 创建路由器
const router = createRouter({
  history: createWebHistory(),
  routes, // 使用已定义的路由配置
});
 

// 全局前置守卫
router.beforeEach((to, from, next) => {
  const store = useAllDataStore();
  const tokenKey = store.getTokenKey();
 


   
 // else if (!tokenKey && to.name !== 'login') {
   if (!tokenKey && isChildrenRoute(to)) {
   
    next({ name: "login" }); // 如果有 token_key 并且是登录页面，重定向到主页
  }
  else   if (to.matched.length === 0) {
    next({ name: "404" }); // 如果没有匹配的路由，跳转到 404 页面
  } 
    
  else {
    next();
  }
   


});

function isChildrenRoute(to: any): boolean {
  // 检查路由是否为 children 路由
  console.log("to.matched",to.matched);
  if (to.name === 'main'  ||  to.name === 'home'|| to.matched.length === 0) {
    return true;
  }
 
  
  return to.matched.some(record => record.parent && record.parent.name === 'main');
}

export default router;